package com.nts.visionworks.business.contents.domain;

import java.util.HashMap;
import java.util.Map;

/**
 * 단위 원소의 유형을 나타내는 열거형을 정의한다. 해당 열거형은 int 타입을 기반으로 한다.
 * 원소의 유형을 나누는 이유는 컨텐츠를 구성하는 구성 요소를 크게 나누어 봤을 때, 각 특성에 맞는 원소 고유의 특성이 존재하기 때문이다.
 * @author Devcken
 */
public enum ElementType
{
	/**
	 * 단위 원소가 파일로 사용되는 경우에 설정한다.
	 */
	File(0),
	
	/**
	 * 단위 원소가 문자(열)로 사용되는 경우에 설정한다.
	 */
	Text(1);
	
	public final int value;
	
	private static final Map<Integer, ElementType> _map = new HashMap<Integer, ElementType>();
	
	static
	{
		for (ElementType item : ElementType.values())
		{
			_map.put(item.value, item);
		}
	}
	
	private ElementType(int value)
	{
		this.value = value;
	}

	public int value()
	{
		return this.value;
	}
	
	public static ElementType convert(int value)
	{
		return _map.get(value);
	}
}